In large-scale virtualization environments comprising a system of virtual machines (VMs), such as in an enterprise for example, an IT organization in the enterprise might manage a datacenter that hosts and services applications that belong to multiple teams such as Finance, HR, Engineering etc. Typically provisioning a virtual application may be triggered by a requester who submits a request to an IT administrator. A virtual application may be a collection of VMs cooperating to provide computing resources to support the enterprise such as electronic mail services, database services, and the like. The request may include such as the list of servers that compose the application stack (e.g. Web server, Application server, DB server), OS images and versions required, resource or policy requirements in order to meet a certain level of service availability, and so on.
An important factor that may be considered during provisioning of a virtual application is whether the virtual application (and its constituent VMs) needs to be protected to ensure a desired level of availability in the event that a site becomes unavailable (e.g., due to power outage, system crash, degraded performance, etc.). The virtualization environment should be able to recover from such disasters in order to lessen the impact to the enterprise as much as possible. The practice of disaster recovery protection typically involves mirroring the data at the “primary site” to storage systems at a “recovery site.” Disaster recovery protection may include providing backup of the physical infrastructure such as host machines in order to host the VMs that comprise the virtual application. Different levels of disaster recovery protection may be provided; e.g., backing up only the data, providing backup for less than all the VMs that comprise the virtual application, providing less than 100% of the processing bandwidth that the primary site provides, etc.